home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / lzw4p12.zip / COMPRESS.PAS < prev    next >
Pascal/Delphi Source File  |  1993-02-28  |  2KB  |  62 lines

  1. program COMPRESS_FILE;
  2. uses crt, memory, rw_io, hex_io, lzw_errs, LZW4P;
  3.  
  4. type
  5.   String12 = String[12];
  6.   AllocMemoryType = function(Size : Word) : Pointer;
  7.   FreeMemoryType  = function(P : Pointer; Size : Word) : Integer;
  8.  
  9. Var
  10.   InpFileName  : String12;
  11.   OutFileName  : String12;
  12.   MemoryP      : Pointer;
  13.   AllocMemoryP : Pointer;
  14.   FreeMemoryP  : Pointer;
  15.   ReaderP      : Pointer;
  16.   WriterP      : Pointer;
  17.   Size   : Integer;
  18.   Code   : Integer;
  19.   i, x   : Integer;
  20. begin
  21.   (* get file names *)
  22.   if ParamCount <> 2 then
  23.     begin
  24.       writeln('Usage: COMPRESS <infile> <outfile>');
  25.       halt;
  26.     end;
  27.   InpFileName := ParamStr(1);
  28.   OutFileName := ParamStr(2);
  29.   (* get pointers *)
  30.   AllocMemoryP := @AllocMemory;
  31.   FreeMemoryP  := @FreeMemory;
  32.   ReaderP := @Reader;
  33.   WriterP := @Writer;
  34.   (* Initialize LZW *)
  35.   Code :=  InitLZW(AllocMemoryP);
  36.   (* open input file *)
  37.   Code := ReaderOpen(InpFileName);
  38.   if Code <> 0 then
  39.     begin
  40.       writeln('Cannot open ',InpFileName,' for input');
  41.       halt;
  42.     end;
  43.   (* open output *)
  44.   Code := WriterOpen(OutFileName);
  45.   if Code <> 0 then
  46.     begin
  47.       writeln('Cannot open ',OutFileName,' for output');
  48.       halt;
  49.     end;
  50.   (* compress *)
  51.   Code := Compress(ReaderP,WriterP);
  52.   if Code < 0 then
  53.     begin
  54.       SayError(Code);
  55.     end;
  56.   (* close input *)
  57.   Code := ReaderClose;
  58.   (* close output *)
  59.   Code := WriterClose;
  60.   (* Terminate LZW *)
  61.   Code := TermLZW(FreeMemoryP);
  62. end.